モジュール詳細:矢車菊色暗号

Centaureae cyanisは綺麗な色を持つ。

モジュールは、3つのディスプレー、キーボード、2つの矢印、及び現在のページを表示するボタン(送信ボタン)で構成されている。

右の矢印を押すと、次のページに移動できる。左の矢印を押すと前のページに移動できる。ページは全部で2ページある。

予め、シリアルナンバーの最初の文字を三十六進数の文字として取得し6桁の二進数に変換する。本マニュアルでは、この二進数の各ビットを右から「ビット1」、「ビット2」、「ビット4」、「ビット8」「ビット16」と表現している(ビット32は使用しない)。

ステップ1:卓球型ストラドリング・チェッカーボード暗号

本ステップの前に、ページ1の下のディスプレーと2ページの上のディスプレーの内容を連結させる。これを「コード化された単語」とする。また、ページ2の真ん中と下のディスプレーにある単語も必要であり、それぞれ、キーワード(KW)1、キーワード2と呼ぶ。

このステップでは、二つのストラドリング・チェッカーボードを作成する。一枚はコード化された単語を長い数字の文字列に変換するために使用し、もう一枚はその数字を英字に変換するために使用する。

1枚目のストラドリング・チェッカーボードを作るうえで、以下の数字を獲得する。

  • d1 = インジケーターの個数を6で割った余り
  • d2 = ポートの数を6で割った余り。これがd1と等しい場合、1を足して再度6で割った余りを求める。

さらに、KW1から以下の手順でアルファベットキーを作成する。

  • キーワードから重複する英字を除外する(最初に出現したもののみ残す)。
  • アルファベット全体の文字列を用意し、キーワードにある英字を除外する。
  • ビット8が1の場合、キーワードの末尾にアルファベットの文字列を配置する。そうでない場合、キーワードの先頭にアルファベットの文字列を配置する。

ストラドリング・チェッカーボードを作成するには、まず5段6列の表を用意する。列に0から5の番号を振る。1段目のセルは、d1の列とd2の列を除いて全て取り除く。残りの26セルをアルファベットキーで埋めていく。ビット16が1の場合、縦読み順(1列目を上から下に埋め、その後2列目以降に続く)の方向で埋める。そうでない場合、読み順(1段目を左から右に埋め、その後2段目以降に続く)の方向で埋める。

さらに、1段目以外の段にも0から5の番号を振る。ただし、d1とd2は飛ばす。

ここから、コード化された単語の各英字を数字に変換していく。1段目にある英字はその列に振られている1桁の数字に変換する。それ以外の英字は、段番号、列番号の順に並べて変換する。

次に、先程と同様に2枚目のストラドリング・チェッカーボードを作成する。ただし、以下の要素を変更する。

  • d1とd2ではなく、以下の数字を使用する。
    • d3 = バッテリーの個数を6で割った余り
    • d4 = 点灯したインジケーターの個数を6で割った余り。これがd3と等しい場合、1を足して再度6で割った余りを求める。
  • KW1とビット8ではなく、KW2とビット2を使用してアルファベットキーを作成する。
  • ビット16ではなく、ビット4を使用して英字を埋める順番を決める。

このストラドリング・チェッカーボードで数字を英字に戻す。最初の数字がd3またはd4の場合、1段目の対応する英字を使用する。そうでない場合、その次の桁と合わせてペアにする。ペア内の1つ目の数字を段、2つ目の数字を列に使用して英字を取得する。最後に1桁残った場合、それは無視する。

完了すると、新たなキーワードのKW3を取得できる。

暗号化された単語: BKPVPJCJF ビット: 01100

KW1: VOLATILE, d1 = 3, d2 = 2
ビット8 ⇒ アルファベット + VOLATIE
ビット16 ⇒ 読み順
012345
##BC##
0DFGHJK
1MNPQRS
4UWXYZV
5OLATIE
B → 2, K → 05, P → 12, V → 45, P → 12, J → 04, C → 3, J → 04, F → 01
数字: 2051245120430401
KW2: LAWFUL, d3 = 0, d4 = 3
ビット2 ⇒ LAWFU + アルファベット
ビット4 ⇒ 縦読み順
012345
L##K##
1ABGMQV
2WCHNRX
4FDIOSY
5UEJPTZ
20 → W, 51 → E, 24 → R, 51 → E, 20 → W, 43 → O, 0 → L, 40 → F, 1 (切り捨て)
KW3: WEREWOLF

ステップ2: 省略版ブラインド・ポリュビオス暗号

このステップでは、ステップ3で取得した8文字の英単語のKW3と、暗号化された単語が必要になる。暗号化された単語は、ページ1の上のディスプレーと真ん中のディスプレーを連結させて作る(数字は無視する)。

以下の図形を使用する。

1234
1
2
3
4
????
?
?
?
?

まず、省略版ポリュビオス正方形(左)をAからPの英字で埋める。KW3を用意し、キーワードから重複する英字(最初に出現したもののみ残す)とQからZの英字を除外する。残りの AからPの英字からKW3に含まれる英字を除いたものをアルファベット順に並べる。ビット1が1の場合、キーワードの末尾にアルファベットの文字列を配置する。そうでない場合、キーワードの先頭にアルファベットの文字列を配置する。この16文字を読み順でグリッド内に記入していく。

次に、ブラインド・ポリュビオス正方形(右)の段と列に番号を振る。列は、KW3の前半4文字に従って1から4の番号を振る。英字のアルファベット順に1から4の番号を振ること。複数回出現する英字については、左から右の順番で振る。同様に、キーワードの後半四文字に従って段にも1から4の番号を振る。

暗号化された単語内の英字を別の英字を示す点のパターンに変換する。省略版ポリュビオス正方形からその英字を探し、段番号と列番号を特定する。そして、ブラインド・ポリュビオス正方形内の同じ段番号と列番号にある点のパターンを見つける。

最後に、点のパターンを上から縦に積み重ね、3段ずつ分割し、統一英語点字として読むと、次のステップのための暗号化された単語が手に入る。

暗号化された単語: KHEEAOBAM
KW3: WEREWOLF; ビット: 01100

1234
1ABCD
2GHIJ
3KMNP
4EOLF

WERE → 4132
WOLF → 4321

4132
4
3
2
1

K → 段3列1 →
H → 段2列2 →
E → 段4列1 →
E → 段4列1 →
A → 段1列1 →
O → 段4列2 →
B → 段1列2 →
A → 段1列1 →
M → 段3列2 →

点字 = VIKGQQ

ステップ3: 連鎖回転暗号

暗号化された単語: VIKGQQ
N = 9
サイクル | カエサル | 残り
GQQVIK | G → G | QQVIK
KQQVI | K+G → R | QQVI
QVIQ | Q+R → I | VIQ
VIQ | V+I → E | IQ
QI | Q+E → V | I
I | I+V → E |
結果: GRIEVE

ステップ2で取得した暗号化された単語とページ1の真ん中のディスプレーの数字Nを使用する。英字を使い切るまで、以下のステップを繰り返す。

  • 暗号化された単語をN回左にサイクルさせる。1回サイクルすると、一番左の文字が末尾に移動し、文字が一つずつずれていく。
  • 左端の英字を最後に取得した英字のアルファベット上の位置の数字だけカエサル暗号で前方に進める(これが最初の英字の場合、この手順を無視する)。
  • この英字が取得した英字である。これを書き留め、暗号化された単語から除外する。

完了後、復号された単語を取得したら、それを送信する。入力を開始すると、全てのディスプレーが暗転し下のディスプレーに入力された文字が表示される。

入力を消去するには、いずれかの矢印をクリックする。ページが移動し、入力した文字列が消去される。6文字を超える入力はできないようになっている。

入力に問題がなければ、「SUB」と書かれたボタンを押して、回答を送信する。ミスが記録された場合、モジュールの最初のページに戻るが、暗号の再生成はされない。